package fr.emn.nuitinfo.model.persistence.impl;

import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;

import fr.emn.nuitinfo.model.Chasse;
import fr.emn.nuitinfo.model.CoordonneesGPS;
import fr.emn.nuitinfo.model.Duree;
import fr.emn.nuitinfo.model.Etape;
import fr.emn.nuitinfo.model.Lieu;
import fr.emn.nuitinfo.model.interfaces.IChasse;
import fr.emn.nuitinfo.model.interfaces.IDuree;
import fr.emn.nuitinfo.model.interfaces.IEtape;
import fr.emn.nuitinfo.model.persistence.IDAO;

public class ChasseMockDAO implements IDAO<IChasse> {

	static List<IChasse> chasses = new ArrayList<IChasse>();

	@Override
	public void create(String chasse) {

		Gson gson = new Gson();
		IChasse c = gson.fromJson(chasse, Chasse.class);
		chasses.add(c);
	}

	@Override
	public IChasse retrieveByName(String name) {

	
	
	for (IChasse c : chasses) {
		if (c.getNom().equals(name)) {
			return c;
		}
	}
	return chasses.get(0);



	}

	@Override
	public void update(String nom, String chasse) {
		Gson gson = new Gson();
		boolean trouve = false;
		for (IChasse c : chasses) {
			if (c.getNom().equals(nom)) {
				c = gson.fromJson(chasse, Chasse.class);
				trouve =true;
			}
		}
		if(!trouve){
			IChasse c = gson.fromJson(chasse, Chasse.class);
			chasses.add(c);
		}
	}

	@Override
	public void remove(String name) {
		
		for (IChasse c : chasses) {
			if (c.getNom().equals(name)) {
				chasses.remove(c);
			}
		}
	}

	@Override
	public List<IChasse> retrieveAll() {
	    
	  //parametres de la chasse
		String region = "Paris/Ile de France";
		List<String> tags = new ArrayList<String> ();
		tags.add("Da Vinci Code");
		tags.add("Historique");
		tags.add("Paris");
		tags.add("Louvre");
		tags.add("Musée");
		tags.add("église");
		String nom = "Sur les traces du Da Vinci Code";
		String description = "Parcourez Paris en vous laissant guider par les péripéties de Robert Langdon, professeur de symbologie " +
				"américain. Avec lui, vous revivrez les scènes les plus poignantes du best-seller, en mêlant habilement" +
				"Histoire et thriller. Pour commencer l'aventure, mettez-vous en route vers le Musée du Louvre," +
				" là où Jacques Saunières, le célèbre conservateur, a trouvé la mort.";
		Duree duree = new Duree(0,4,0);
		List<IEtape> etapes = new ArrayList<IEtape>();
		
		
		//Etape1
		Lieu lieuEtape1 = new Lieu(new CoordonneesGPS(48.861814,2.336386),"La pyramide du Louvre");
		String[] reponsesEtape1 = {"La Joconde"};
		String[] indicesEtape1 = {"Indice1: C'est une peinture de Leonardo Da Vinci.",
			"Indice2: La réponse n'est pas Mona-Lisa, c'est le nom de la peinture."};
		etapes.add(new Etape("Son sourire énigmatique reste un des mystères de la peinture.",
		        reponsesEtape1, "Le Louvres- Salles des états", indicesEtape1, lieuEtape1));
		
		
		//Etape2
		String[] reponsesEtape2 = {"Pyramide"};
		String[] indicesEtape2 = {"Rappelez vous les phares à On."};
		Lieu lieuEtape2 = new Lieu(new CoordonneesGPS(48.861045,2.335791),"La pyramide du Louvre");
		etapes.add(new Etape("Un célèbre monument fondé par Miterrand", 
				reponsesEtape2, "La pyramide du Louvre", indicesEtape2, lieuEtape2));
		
		//Etape3
		String[] reponsesEtape3 = {"Ritz"};
		String[] indicesEtape3 = {"Cherchez une place d'horlogers","Un hotel célèbre de la place Vendôme."};
		Lieu lieuEtape3 = new Lieu(new CoordonneesGPS(48.867722,2.328511),"La pyramide du Louvre");
		etapes.add(new Etape("Hôtel où s'est réfugié Robert Langdon", 
				reponsesEtape3, "L'hotel Ritz de la place Vendôme.", indicesEtape3, lieuEtape3));
		

		//Etape4
		String[] reponsesEtape4 = {"L'église de St Sulpice"};
		String[] indicesEtape4 = {"Une église fameuse du VIème arrondissement."};
		Lieu lieuEtape4 = new Lieu(new CoordonneesGPS(48.850965,2.333857),"L'église de St Sulpice");
		etapes.add(new Etape("L'endroit de la fameuse \"rose-ligne\", méridien historique de Paris.", 
				reponsesEtape4, "L'église de St Sulpice", indicesEtape4, lieuEtape4));
		

//		if(chasses.isEmpty()){
//			List<IEtape> etapes = new ArrayList<IEtape>();
//			IEtape ietape1 = new Etape("enigme", new String[] { "reponse1",
//					"reponse2" }, "un commentaire", new String[] { "indice1",
//					"indice2" });
//			etapes.add(ietape1);
//			IDuree myDuree = new Duree(5, 5, 5);
//
//			chasses.add(new Chasse(etapes, myDuree, "unNom", "Unedescription"));
//
//			List<IEtape> etapes2 = new ArrayList<IEtape>();
//			IEtape ietape2 = new Etape("enigme", new String[] { "reponse1",
//					"reponse2" }, "un commentaire", new String[] { "indice1",
//					"indice2" });
//			etapes.add(ietape2);
//			IDuree myDuree2 = new Duree(5, 5, 5);
//
//			chasses.add(new Chasse(etapes2, myDuree2, "unNom2", "Unedescription2"));
//
//			List<IEtape> etapes3 = new ArrayList<IEtape>();
//			IEtape ietape3 = new Etape("enigme", new String[] { "reponse1",
//					"reponse2" }, "un commentaire", new String[] { "indice1",
//					"indice2" });
//			etapes.add(ietape3);
//			IDuree myDuree3 = new Duree(5, 5, 5);

			//chasses.add(new Chasse(etapes3, myDuree3, "unNom2", "Unedescription2"));
		chasses.add(new Chasse(region,tags,etapes, duree, nom, description));

//		}

		return chasses;
	}

}
